@echo off
chcp 65001 >nul
echo ========================================
echo    阿里云服务器自动部署工具
echo ========================================
echo.

REM 检查必要文件是否存在
if not exist "websocket_server.py" (
    echo ❌ 错误：找不到 websocket_server.py 文件
    pause
    exit /b 1
)

if not exist "requirements.txt" (
    echo ❌ 错误：找不到 requirements.txt 文件
    pause
    exit /b 1
)

echo 请提供您的阿里云服务器信息：
echo.

set /p SERVER_IP="请输入服务器公网IP地址: "
if "%SERVER_IP%"=="" (
    echo ❌ 错误：IP地址不能为空
    pause
    exit /b 1
)

echo.
echo 正在验证IP地址格式...
echo 服务器IP: %SERVER_IP%
echo.

set /p CONFIRM="确认开始部署？(y/n): "
if /i not "%CONFIRM%"=="y" (
    echo 部署已取消
    pause
    exit /b 0
)

echo.
echo ========================================
echo 开始部署到阿里云服务器...
echo ========================================
echo.

REM 1. 上传文件到服务器
echo [1/6] 正在上传文件到服务器...
scp websocket_server.py root@%SERVER_IP%:/tmp/
if %errorlevel% neq 0 (
    echo ❌ 文件上传失败！请检查：
    echo    1. 服务器IP地址是否正确
    echo    2. 网络连接是否正常
    echo    3. SSH服务是否开启
    pause
    exit /b 1
)

scp requirements.txt root@%SERVER_IP%:/tmp/
if %errorlevel% neq 0 (
    echo ❌ 文件上传失败！
    pause
    exit /b 1
)
echo ✅ 文件上传成功

REM 2. 更新系统并安装Python
echo.
echo [2/6] 正在更新系统并安装Python环境...
ssh root@%SERVER_IP% "apt update && apt upgrade -y"
ssh root@%SERVER_IP% "apt install python3 python3-pip python3-venv -y"
echo ✅ 系统环境配置完成

REM 3. 创建项目目录和虚拟环境
echo.
echo [3/6] 正在创建项目目录和虚拟环境...
ssh root@%SERVER_IP% "mkdir -p /opt/patient-management"
ssh root@%SERVER_IP% "cd /opt/patient-management && python3 -m venv venv"
ssh root@%SERVER_IP% "cd /opt/patient-management && source venv/bin/activate && mv /tmp/websocket_server.py ./ && mv /tmp/requirements.txt ./ && pip install -r requirements.txt"
echo ✅ 项目环境配置完成

REM 4. 创建系统服务
echo.
echo [4/6] 正在创建系统服务...
ssh root@%SERVER_IP% "cat > /etc/systemd/system/websocket-server.service << 'EOF'
[Unit]
Description=Patient Management WebSocket Server
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/opt/patient-management
Environment=PATH=/opt/patient-management/venv/bin
ExecStart=/opt/patient-management/venv/bin/python websocket_server.py
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
EOF"
echo ✅ 系统服务创建完成

REM 5. 启动服务
echo.
echo [5/6] 正在启动WebSocket服务...
ssh root@%SERVER_IP% "systemctl daemon-reload"
ssh root@%SERVER_IP% "systemctl enable websocket-server"
ssh root@%SERVER_IP% "systemctl start websocket-server"
echo ✅ 服务启动完成

REM 6. 创建备份脚本
echo.
echo [6/6] 正在配置自动备份...
ssh root@%SERVER_IP% "cat > /opt/backup.sh << 'EOF'
#!/bin/bash
BACKUP_DIR=/opt/backups
DATE=\$(date +%%Y%%m%%d_%%H%%M%%S)
mkdir -p \$BACKUP_DIR
tar -czf \$BACKUP_DIR/websocket-server_\$DATE.tar.gz /opt/patient-management/
find \$BACKUP_DIR -name \"websocket-server_*.tar.gz\" -mtime +7 -delete
echo \"备份完成: websocket-server_\$DATE.tar.gz\"
EOF"

ssh root@%SERVER_IP% "chmod +x /opt/backup.sh"
ssh root@%SERVER_IP% "(crontab -l 2>/dev/null; echo \"0 2 * * * /opt/backup.sh\") | crontab -"
echo ✅ 自动备份配置完成

echo.
echo ========================================
echo 🎉 部署完成！
echo ========================================
echo.
echo 服务器信息：
echo - 服务器IP: %SERVER_IP%
echo - WebSocket端口: 8080
echo - 连接地址: ws://%SERVER_IP%:8080
echo.
echo 管理命令：
echo - 查看服务状态: ssh root@%SERVER_IP% "systemctl status websocket-server"
echo - 查看实时日志: ssh root@%SERVER_IP% "journalctl -u websocket-server -f"
echo - 重启服务: ssh root@%SERVER_IP% "systemctl restart websocket-server"
echo - 停止服务: ssh root@%SERVER_IP% "systemctl stop websocket-server"
echo.
echo 下一步操作：
echo 1. 修改Android客户端中的服务器IP为: %SERVER_IP%
echo 2. 重新编译APK: gradlew.bat assembleRelease
echo 3. 测试连接是否正常
echo.
echo 测试连接命令：
echo python test_aliyun_connection.py %SERVER_IP%
echo.
pause 